home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / ftpvoyager_overflow.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  131 lines

  1. #
  2. # (C) Tenable Network Security
  3. #
  4. # Ref: 
  5. #
  6. # Date: Mon, 09 Jun 2003 12:19:41 +0900
  7. # From: ":: Operash ::" <nesumin@softhome.net>
  8. # To: bugtraq@securityfocus.com
  9. # Subject: [FTP Voyager] File List Buffer Overflow Vulnerability
  10. #
  11.  
  12. if(description)
  13. {
  14.  script_id(11711);
  15.  script_bugtraq_id(7862);
  16.  script_version("$Revision: 1.3 $");
  17.  
  18.  name["english"] = "FTP Voyager Overflow";
  19.  
  20.  script_name(english:name["english"]);
  21.  
  22.  desc["english"] = "
  23. The remote host is running FTP Voyager - a FTP client.
  24.  
  25. There is a flaw in the remote version of this software which may 
  26. allow an attacker to execute arbitrary code on this host.
  27.  
  28. To exploit it, an attacker would need to set up a rogue FTP
  29. server and have a user on this host connect to it.
  30.  
  31. Solution : Upgrade to version 10.0.0.1 or newer
  32. Risk factor : High";
  33.  
  34.  
  35.  
  36.  script_description(english:desc["english"]);
  37.  
  38.  summary["english"] = "Determines the presence of FTP Voyager";
  39.  
  40.  script_summary(english:summary["english"]);
  41.  
  42.  script_category(ACT_GATHER_INFO);
  43.  
  44.  script_copyright(english:"This script is Copyright (C) 2003 Tenable Network Security");
  45.  family["english"] = "Windows";
  46.  script_family(english:family["english"]);
  47.  
  48.  script_dependencies("netbios_name_get.nasl",
  49.               "smb_login.nasl","smb_registry_access.nasl");
  50.  script_require_keys("SMB/name", "SMB/login", "SMB/password",
  51.              "SMB/WindowsVersion",
  52.              "SMB/registry_access");
  53.  
  54.  script_require_ports(139, 445);
  55.  exit(0);
  56. }
  57.  
  58.  
  59. include("smb_nt.inc");
  60.  
  61.  
  62.  
  63. rootfile = registry_get_sz(key:"SOFTWARE\Microsoft\Windows\CurrentVersion", item:"ProgramFilesDir");
  64. if(!rootfile)
  65. {
  66.  exit(0);
  67. }
  68. else
  69. {
  70.  share = ereg_replace(pattern:"([A-Z]):.*", replace:"\1$", string:rootfile);
  71.  exe =  ereg_replace(pattern:"[A-Z]:(.*)", replace:"\1\RhinoSoft.com\FTP Voyager\FTPVoyager.exe", string:rootfile);
  72.  }
  73.  
  74.  
  75.  
  76.  
  77. name     = kb_smb_name();
  78. login    = kb_smb_login();
  79. pass      = kb_smb_password();
  80. domain     = kb_smb_domain();
  81. port    = kb_smb_transport();
  82. if(!port) port = 139;
  83.  
  84.  
  85.  
  86. if(!get_port_state(port))exit(0);
  87.  
  88. soc = open_sock_tcp(port);
  89. if(!soc)exit(0);
  90.  
  91.  
  92.  
  93. r = smb_session_request(soc:soc, remote:name);
  94. if(!r)exit(0);
  95.  
  96. prot = smb_neg_prot(soc:soc);
  97. if(!prot)exit(0);
  98.  
  99. r = smb_session_setup(soc:soc, login:login, password:pass, domain:domain, prot:prot);
  100. if(!r)exit(0);
  101.  
  102. uid = session_extract_uid(reply:r);
  103.  
  104.  
  105.  
  106. r = smb_tconx(soc:soc, name:name, uid:uid, share:share);
  107. tid = tconx_extract_tid(reply:r);
  108. if(!tid)exit(0);
  109.  
  110. fid = OpenAndX(socket:soc, uid:uid, tid:tid, file:exe);
  111. if(fid != 0)
  112. {
  113.  fsize = smb_get_file_size(socket:soc, uid:uid, tid:tid, fid:fid);
  114.  off = fsize - 237568;
  115.  data = ReadAndX(socket:soc, uid:uid, tid:tid, fid:fid, count:16384, off:off);
  116.  data = str_replace(find:raw_string(0), replace:"", string:data);
  117.  version = strstr(data, "ProductVersion");
  118.  if(!version)exit(0);
  119.  for(i=strlen("ProductVersion");i<strlen(version);i++)
  120.  {
  121.  if((ord(version[i]) < ord("0") ||
  122.     ord(version[i]) > ord("9")) && 
  123.     version[i] != "," && version[i] != " ")break;
  124.  else 
  125.    v += version[i];
  126.   v = str_replace(find:" ", replace:"", string:v);
  127.  if(ereg(pattern:"^([0-9],|10,0,0,0)", string:v))security_hole(port);
  128. }
  129.